ML }  X c0C)HCCH Mhhݩh `eCDiCD`  RyHP   * 1H0芢@) Y0.Ș` i #(PMR\ \b Pgi 0  % @ / ՠ`d   0DDԝLyN@  )?HI Y0`HIJH) * J j * hJJJ )HJ h i     } YS S0 i`΢ϣ߳H J3xj2h} 1 |9 ӭ45(420 * (0241өX.`  R *i)Lvw  ~*P}E 5 LN(G E  r s k rsrL ( E LO(0d( L iE0O +)$IC  H S8 }q p h   j 8no CDLQ CFl M  LO Ri)Llk2'")*F }$F$F$F$F$ 5 )ШF/Șl]kpqС,LQ/A! Ti)Zlk@ ܬ/i)(")")k }$F$F$F 5$/L /lF@jj(LNkle$$%8(k()` R 8 ELO Ri)^>jf | NrC s } ) vw5g   enfo Glvw LQ@iLm>j FL ~Jjjjii p qEh }jlrs`LQ:$ȱ$@+[_#{ 8  Խut! ai 8   E I   ] C } H h    ˰ 8  N   Lm E  ,  [ `LQ ,/ 8 ~/  Ơ? ѩ}/  [ /Lj0?MoLn FjMqLp NklLOLQnLoMlNLO R"(+}ըHH`Q R!!  % !   / .   FȑF! /GF \H"+0+* }! F tLQnm: J~nTF1F  *n+)5! n (, n)1JJJn(n*o} I ,0  ci a oF? @ , 8,0 ʩ0H Eh   i}  D ]DmmFLQvtu`*&!*@h ] 0 ^0` c 0l$$%}()()%*&J%H,@hH hH@,h $% 8i8$(%)0hhH ]h`() c 0H c 0 h}`hhh&JJ ](ll  LQ0  /qnoHH 9 9 H H  I9  9 } Nd EH  Q8 o n  FnoL HII/ Ih8`h`Lnon`no`u F }E VEhLO/luF l0BF/lɜɛ׽hE N  b VFL FREE SECTORS C} H) *Fh ):FȽ F FC IH' 0 d  i:Fȩ/F.l`CD/08HDIC}IHȰ/F`ȱ$>.+.i ȱ$:刄H !A \ Hȱ$*?ȝ 2. ? [_{ ,0}-:) 0$:>WI  IТ,LQH  0hLd ~ t u`C ?( 0(C.` E } R =! .ti S0N EE D XC )0')AY  )ע ? 0E088FG \o}n  (HhLcL3 iJ i Lqp 0=rspnqopqlk`jZj0  j FL`H}FhȑFȽlFi0 h FFLFpvqwgneofLF pq7  G0i 0 FJJh1FqȱFpȱFk`B!}08`hEE D 8. =D}tui( TʩL`b!)    cȌaȌd b`aab}H8 hdaHcd8 cH hHH  \h hc` =Hh I8ih( t  ( t(!` L\}CJfCJfCJfCDfC` a  HII  INdh  `h  `n)8jHniPoijIjFIjFIjh` a } I 38  8H0 I  ' H LQ8j Y  8j NdY  &I &I &IHeH.p!}Iiq  `!.莿 2Jjj }.m Ȉ!m FG` ɩLQ z "} e Hi04 \ Ȍ  8 i h !`I0 `C Y8.`DOS SYS#} I  ` ~ݩ.C/`ba.m۩mѤC9 `C L] H  ,- '0 l $}, BLVDE`D1:AUTORUN.SYS8hhJ ȱHȱIȱBȱDȱEeeHHLV)  %}1*  ,,p-  0 I &  '0   Lw)l, 0  I&LD1:MEM.SAV&}E:D1:DUP.SYS(肢 jT!db" :b,);`I4pD@bxI%hR '} D  C D     )16CS S)  C)D1 p p (}0 C9DI pCDL~CiCDiD` DD˙` d J)L !)}D L(( LL()  L| L( S LH 0p n  *} CY?  q  L L  ` )+} `A! d߰")-݆ "  $G@LLL&0") $G%,}H0 3S8`G ȱG ȱG   Gȭ Gȭ GG}GHiH8(()) G$H% `(0-})8` d)L ݆ & LGȘ ݆LL d  ! LL d)N>Q  HH).}  hyhyB q L> Lm JJ  Ln*` dB%'/}8  H H` 1 { LL   !L     Hh SY?  q  1L0}  !? S   q 1 L   Ll  Lg E`L   !L)  q 1L1}) `L0AM݊L݉ ML  N݆LLLNLMLHG!@2}1F GȱGLLEEȩÑEȑEEȑE Ed E7EȩE  q3} L !,0,0SGɛ L 1 !L EHEh W G gLLSROTCES EERF 4} G) *Gȩ GȽG GȌd q q G`  8   0G  `D5}CEDC0X:Ȣ Y ȱC* ? 0.. , 0%n ?A[ 0 : L`L  `, 0`Y6}`piH n0)բY? 08`0 7}  0$L GGȽG L `8L`L8}8`  05G)݁,G)ȱGȱGHh0})Hh` B! 8`8iiiLE`9}E8FEh( l0`ɃLL L8^~jj8jHi hEEEiEȱEiE` dTE:} H8EEȱEEȩEh J E8   . m  i`LI!)E1FR;}1LJ舩9GIH`LJJ`HGHh l`<} S gL   8 rii `дCDCG W  =}C  Lq` X٨`DOS SYS IIIIIIIIIIIIIIIC`0 ߩ0}}>} HE |||||DOS DOSDOS SYS }?}}@}CDOS SYSA} 0`BDELV !B B}`LVUQ   ]   TU J ]L!T  #      TU C} L ? .  t`GBJ V~DEHI B V0dVD}QDEHI VF9 ,0 ,0 s0hhL  L` H hDHEhE}DEL8HI   0 HI,0 0  9 .G VLOF},0 L4*IJ`llD1:AUTORUN.SYSNEED MEM.SAV TO LOAD THIS FILE.D1:MEM.SAV J y08 B|DEHIG} V0 0`B;DELV䌚 !B y`@ʆ v s? F0Ξ05: [ BDEHIH} VY8 B V  @  /DE `E:D1:DUP.SYSERROR-SAVING USER MEMORY ON DISKTYPE Y TO I}STILL RUN DOS B;DE J V (` 9 V⪍ ઍ  -J}LLu DEHILV 9 .l 9 .l  `` s$B VBHK}I|DE V BLV nB,DE J V* \*` B V BLVDEHI BLVLL}1 3u H232435; 1 ;  hh@2 e1i1LHҍ 00) 08 109hh@ Ҡ2eM}1i1232435ޥ<<8}-.)=PCSPATYNXYFANPAKKZARGARGPZFA@@O} dSUPER SINEe&&9AP,9@,;@,P}ir+@"A4-@@K @ S U P E R]-@@r @s i n ej5ARQ}@ 5  PLEASE STAND BYks-@ 6-G:,)68,-;68%A,-6L68A&,-^68AR}`&,-6o68%A`,-s nC +@A @1ACA@hx; @6-@%S}6-@916-; Ac,@'/A@3,?/AYQ,AYc/AT}AY K1,K2=) PATTTERN)"A( 6-66-66-%@(68,- 6-O:,6-U}6$N:,-A 6-%6-%'!A`6-&A`' AS'!A`6-&A`' AT)V}"@)6-@%$+8,%8,,9"@96-@%$+8%@,%8%@,,1"@16-@%$+W}8,%8%@,,1"@16-@%$+8,$8%@,,)"@)6-@%$+8,&8,,9"@9X}6-@%$+8%@,&8%@,,)"@)6-@%$+8,$8,,9"@96-@%$+8%@,$Y}8%@,, ", / _%2@@@@9-@@P= _2Z} AE, NEW GRAPH (Y/N),0YAE A D2:SINE1.BAS_2oBC  PCSPATYNTABZXOUTTSTXYFANPAKKZARGARGPZFAPS@@\} ]}d""SUPER SINE (PRINTER VERSION)e&&9AP,9@,;@,fm&;@,;A^},;A,<6. ID6.U67A,.m67@,.7@,ir+@"A4-@_}@K @ S U P E R]-@@r @s i n ej5AR@ 5  PLEASE STAND`} BYks-@ 6-G:,)68,-;68%A,-6L68A&,-^68A`&,-6o68%A`,-s nC +a}@A @1ACA@hx; @6-@%6-@916-; Ac,b}@'/A@3,?/AYQ,AYc/AAY K1,K2=) PATc}TTERN)"A( 6-66-66-%@(68,- 6-O:,6-6$N:,-A 6-%6d}-%'!A`6-&A`' AS'!A`6-&A`' AT)"@)6-@%$+8,%8,,e}9"@96-@%$+8%@,%8%@,,1"@16-@%$+8,%8%@,,1"@16-f}@%$+8,$8%@,,)"@)6-@%$+8,&8,,9"@96-@%$+8%@,&8%@g},,)"@)6-@%$+8,$8,,9"@96-@%$+8%@,$8%@,, ", h}/ _%2@@@@9-@@P= _2 AE,i}  PRINTER (Y/N)"4Y, A, NEW GRAPH (Y/N),0YAE A(#{#@@j}P:- A`8 @G6-F:AY,YAY{6-F:@,%AV$F:@,*# F:A6,"AAk},#/ #A!-A6Aw%"+/ .#ff104,104,133,204,104,133,203,104,133,206,104,133,205,162,191,160,0,177,2l}03,72,138,168,104,145,2050#EE202,240,13,24,165,203,105,40,133,203,144,234,230,204,208,230,962#99 @7@<@m}, K1= K2=3#22 @7@<@, PATTERN: 4#7-@( @8, , 7 n}@6#// @>:@',>:@e,>:@,7#B6.>:At,*67A,.>:At,B67@,.7@,8#>> o}@>:@',>:@u,>:A,>:,<#/-%@96./6-?:A6<> @>:@',>:@u,>:A,>:,U# W#B6.>:A,*67A,.>:A,B6q}7@,.7@,X#>> @>:@',>:@u,>:A,>:,Z#S$ @>:@',>:@d,/ @r};AYE BP@S$d#VL @ERROR-F:A, AT LINE F:A,%AV$F:A,V APs} D2:SINE2.BASP@S$d#VL @ERROR-F:A, AT LINE F:A,%AV$F:A,V AP12%%DSDATHEXLINDATLIDDBYTPASCHKSUTOTAIN@ u} ""*** BATTLE IN THE B RING ***I @ 1(MAKE CASSETTE (0), OR D v}ISK (1)5I!@@ C BC0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,0,10,11,12,13,14,15(r;@,9@" w},/-@"3"<68,-@ L6-A V#A` A r( CHECKING DATA286-%@(LINE:!"8B x}:,@A <F%6-F:A,%F:A,$AV+C(LINE  MISSING!FFq-@@@56- y}@:7<,,&@H[6-@:7%@<%@,,&@Hq6-8,$@%8,P."@*@ $". @PZ z}% 6-%!A %6-&Ad  ""@Pn A x F:A,@A "Ap {}(A`*@A$)*@@<*@A%O*@@b*@u*@ |}@2@<-@@y**@. 9@<(Ag+("INSERT DISK WITH }} DOS, PRESS RETURN8;@,<g@@ D:AUTORUN.SYS*@AU)*@AU<* ~}@O*@@2b*@A6u*@@E A{((READY CASSETTE AND PRESS RETURNH }@@A(C:R#A0f-@@@j"w*@{ M(( WRITING FILE#6-@/6-A }9#AC A M @P(BAD DATA: LINE ``0,28,216,31,255,31,169,0,141,47,2,169,60,141,2,211,169,0,141 },231,2,133,14,169,56,141,232,2--133,15,169,0,133,10,169,32,133,11,24,96ccD8A203BDC02A9DC402BDBC2A9DDC06CA10F1A9008D08 }D2A9038D0FD24C302C48A5CA8D04D4A92C8D0002684048,46ddA5CC8D04D4A9398D0002684048A9028D0AD48D01D4A9498D0002684048A5CA8D04D4A9 }568D0002684048A5C98D,763dd04D4A91F8D00026840A901ACDD06A200205CE4A5C9C909D00160C6C9A5C9F00160A90885C9A20FAD0506C96AF0,975 }dd061869014C9020A9009D020609809D33064980CACACAD0F160A902A200ACDD0688205CE4A5C9C909D00160C6CA,901ccA5CAF02BA5B8F026C6B8 }A5B88D02D0AEE206A018BD532A91B2E88810F78EE206E04BD00AA2008EE2068E02D086,31ddB860A90885CAA20CAD1506C96AF0061869014CF820A900 }9D120609809D26064980CACACAD0F1A5B8D033AD0AD2,181$dd290F85CD186902186D1E06A002D9F206F0048810F860A5CD0A0A0A18693885B88D02D0A }9C88D00D28D01D2A904,740.dd8D1E0260A9C08D0ED4ADDB068D01D4A5C98D04D4A5CBC910D0034C62E4ADEB06F00DC988F009EEEB06ADEB068D,6978 }dd03D2E6CBA5CB2901F0034C62E4C6CCA5CB290F85CB4AAABD4B2A8D2410A5B9F007C6B9A5B98D03D0A5CCF0034C,673Bdd62E4A90885CCAD2206C90 }BD00FA2E086B98E02D2A2818E03D28EEB06C924D00BA2008E02D28E03D28EEB06A6C1,318LddE000D04C18C90D904718C91EB04238E90D0A0A0A85CDA9 }CC38E5CD85CDA20018B5B0C96B900C18C982B00718B5,397VddB6C5CD9008E8E002D0E84C1222A5CD85C18D07D0A9268D00D2A98E8D01D2A9058D1E02A }D2206C93FF006186901,632`dd4C2122A9008D22068D25064C62E4A21FA90095B09DE006CA10F8A90985C9A91085CBA9048DDB06A900AAA8A918,523j }dd8D07D4A91B85C3A91C85B4A91D85B5A91E85B3A9E085CFA91285BB8DF402A90085BA85CEAAA8B1CE91BAC8D0F9,103tccE6BBE6CFE8E002D0F0C6B }BC6BBA000A90885BAB90F2991BAC8C078D0F6A200A0D086BABD0B2A91BAE8E038F008,10~ddC8D0F3E6BB4C9922A24DA0008C2F02BDC42A9D0006CA10F }7A9068C30028D3102AD060685BB84BA98AA91BAC8D0,425ddFBE6BBE8E00BD0F4A200AD060685BBADDC0685CF86BAAD0AD22903A8B9072A85CE18AC0A }D2C06BB0F8B1BAC900,619ddD0F2AD0AD2290FF0F905CE91BAE8E4CFD0D7A20018A5BA698085BA9002E6BBA5BBCD1F06D007A4CF88888884CF,218 }ddCD2606D0B7AD1F0685BBAD0AD22903A8B9072A85CEAD0AD22903A8B9072A85CF18AD0AD2F0FAC969B0F685BA9D,856ddF206A000B1BAD0EBAD0AD2 }290FF0F905CE91BAAD0AD2290FF0F905CFA08091BAE8E003D0B8A900A2129D00079D,840cc8007CA10F7A014AD060685BB85CFA96B85CEE886BAB1BA9 }1CE8810F9A014E8A5BA18698085BA9002E6BBA5CE18,44dd698085CE9002E6CFE012D0DCA003B9472A9920108810F7A9108D64068D6E06A900AA8D630 }68D6D06A91885BB8A,111dd85BAA891BAC8D0FBE6BBE8E008D0F4A205A9009D02D0CA10FAA96C85B2A9038D1DD0A93E8D2F028D1ED0A9788D,460d }d01D085B78D00D085B6A9C485B1A92385B085BAA5B485BBA5B185CEA5B585CFA007B9862991BA91CE8810F6E6CF,232ddE6CFA074A90085CEA90191C }EC8C07CD0F9A070A9C091C2A07F91C2A203BDB82A9DC002CA10F7A9088D04D485CA,810dd85CC8D1FD085C5A90985C4A9638D2602A9208D2702A901A2 }00A004205CE4A9A08D2802A9208D2902A902A200A0,434cc03205CE4A907A221A03F205CE4A9208D0102A91F8D0002A9C08D0ED4A9018D1BD0AD8402D }0034CC024AD8502D0,35ddF3A90F8D1C02AD1C02D0FB85CBA90885C9A9018D1C02E6C8A5C82901AA85C8B5B6D0034C0127A5CBC910D017EE,567dd }E806ADE806291F8DE806D00AADC302C994F003CEC302BDE006F04EFEE606BDE60629039DE606D021BCAA2ABDEC,405 dd06C980F00CDEEC06BDEC0699 }05D24C3525A9009904D29905D29DEC06BDC002C99FF00CFEC002FEC002FEC0024C,139dd0127BDE6062901F0034C01274C2728BDEE06F0034C1426AD0 }BD0F01EA00084C18C07D08C1ED0C904F010AACA86,817ddC2A006206626A6C220EF27A6C8BD0CD0F029C904D0034C0F28C908D01BADC302C994F0034C }0F28BCA02AB9B600,916(dd8D1ED0D0034CEF284C01274C8728BD00D0F00920912720772820D828BD08D0F040C904D00620D8284C0126C908,3092cc }D01520D828A91085CBA9008D24108D02D28D03D24C0126B4C6AACABDE006F0034C01272066268A4AAA20EF27A6,89<ddC820912720D828BD04D0F0398 }D1ED0207728ADDE06D00320EF27FEEE06BDEE06C904D005A9009DEE06B5C4A8B9,632FddF629C906D00B18B5B0C975A904B002A905A82066264C0127BD }8402D009854DB5BFD0034CB127BD7802C90FD006,391Pdd20C8264C012738E905A895C42066264C0127B5B61879E229C9C1F009C92FF0059D00D095B6B }5B485BBB5B01879,662ZddEC29C9C5F041C922F03D85BA95B0A007B9862991BA8810F8FEE406BDE40629079DE406A8B9A22AA00491BABDE9,904ddd }06F00160BDE4062901A8BDAA2AAAB9AC2A9D04D2A9A59D05D260B5B085BAB5B485BBFEE406BDE406290F9DE406,738ndd4AA8B9A22AA00491BABDE906F }00160BDE40629034AA8BDAA2AAAB9AE2A9D04D2A9A59D05D260A5BFF005A20020,278xddC228A5C0F005A20120C228A5C1F007C6C1A5C18D07D0AD1E02 }D0068D00D28D01D2AD1FD0C907F0034CEF28ADE9,999dd06F005A200207727ADEA06F005A201207727A5BEF024EEF106ADF10629038DF106D017A5BE8 }5C2A9008D06D085,151ddBEA004B1C259B22A91C28810F6AD1C02D0FB4CD024FEE906FEE906BDE906C930F007BCAA2A9904D260A9009DE9,236cc }0660A5BEF00160B5BF8D06D0B5BC38E90285BE85C2A004B1C219B22A91C28810F66018A5B6C5B7BD432A9003BD,65dd452A95C6BCAA2AA9089904D29D }E906A98B9905D2B4C6B5B61879002A95BFB5B018690595BC85C2A000B1C21DB0,698dd2A91C24C4D26207728BC9E2AB96406186901C91AF0049964066 }0A910996406A9119963066868207728BCAA2AA9,952ddC89904D2A98F9905D29DEC06A9909DC002B5B085BAB5B485BB86C2BDE006AAA007BD8E2991BA }E88810F7E040F0,565dd098AA6C29DE0064C0127A900A6C89DE0069D00D095B695B08D1ED0BCAA2A9904D29905D2EEF006ADF006C902D0,346dd0 }34CEF284C0127A9C88D00D2A98E8D01D2A9058D1E0260207728A200A000A99E8DC0028DC102A5B185BAA5B585,297ddBBA5B485B1BD8E2991BA91B0E8 }C8C008D0F3A9028D1E02A000AD1E02D0FBE040D0E34CEF28B4C6B5BF1879E229,654ddC9DCF00AC928F00695BF9D04D060A9009D04D095BF8D1ED0A8B }5BC85C2B1C25DB02A91C260A91E8D1C02AD1C02,428ddD0FBA0079900D09900D28810F7A91085CBA90985C94C302C0018387F7E183C20001C7E7F3C18 }000000103C7808,396dd00000000187E3E7C6400183E7C3C187E3C7800607C383C7E06001C3C1E3C7E7E3800000010381C000000000018,510bb2 }0000000000000387E18300000000000183C7E7800003C3E1E7C382000000000003F6E34000018783C3E1C0000,9dd007C3E3C1C3E7800001038FEFEFE }380000084018FEAAFE30048024807EAAFD10002400522C293C402400910842,620dd2A4A1022910010815200928920800140028051400100800000418 }000000000000000000000302C393200110000,479dd0000302C39320012000001010100FFFFFF00000001FF000001FF000001FF010006000504020009 }080000090000,276"dd00FE004080C0FF3F1F0000000000FFFFFF0000000000FFFFFF1F0F070307FEFEDE0200000000FCF8F0E0000000,552,dd00F }EFCF8F000000000F8F0E0C000000000020606029A1B1CDD9F9EA00000000000100810180810081008081008,5256cc1010101808100808040810081008 }10100810081010180810081008081008100808181010080804100808100810,85@dd0804081020201808100C0408100810100808000A01007EBEDEEEF6 }FAFCFE0002A0AAB4BE030C201030302010CA,229Jdd469E9E0A040000282544797070702056000756000856000956000A56000B8056000C56000D56000 }E56000FB0D6,654Tdd0010560010B056800F56800E56800D56800C8056800B56800A56800956800856800746CE294660062041000670,805^dd7070 }7047382B0770465D2B707047FE2B470D2C70476E2B478D2B70477E2B47B42B7041122B0000000000626174,142hcc746C6500696E00000000000000000 }0000074686500620072696E6700000000002239002C25370034282F2D2934,37rdd3300000000F2E9EEE700E4E5EEF3E9F4F90000000000F2E9EEE700F }3F0E5E5E40000000000000000ACAFB70000,339|dd00000000000000ADA5A4A9B5AD0000000000000000A8A9A7A8000000000000000000B3ACAFB70000 }0000000000,745dd00A6A1B3B4000000000000000032292E270024252E33293439000000000032292E270033302525240000000000,312ddE3EFE }CECE9F3E9EFEEF30000000000232F2C2C2933292F2E3300000000000000B3A3AFB2A9AEA7000000000000,331ddAEAFAEB3A3AFB2A9AEA70000000000 }A9008D2F02ACDF06A9E08DF402A9028DDB06A912A22B8D30028E3102A93E,143dd8D2F02AD1FD0C906D00B8CDF06A91420662D4C2A22C903D059C001F }01BC002F02EA9EFA22B8D212B8E222BA9D0,927ddA22B8D282B8E292B4CB12CA96EA22B8D282B8E292BA9E0A22B8D2F2B8E302B4CB12CA97EA22B8D2F }2B8E302BA9,305ddFEA22B8D212B8E222BC8C003D002A000A92820662D4C512CC905D08DC001F02DC002F06AADDE06F012A9008DDE,318dd06A90 }DA22C8D242B8E252B4C5E2DA9018DDE06A91CA22C8D242B8E252B4C5E2DADDC06C90AF016C90CF024A90A,508cc8DDC06A98DA22B8D2B2B8E2C2B4C5E }2DA90C8DDC06A99AA22B8D2B2B8E2C2B4C5E2DA90E8DDC06A9A7A22B8D2B,83dd2B8E2C2B4C5E2DADDD06C904F012A9048DDD06A9B4A22B8D322B8E33 }2B4C5E2DA9038DDD06A9C0A22B8D322B8E,695dd332BA91E20662D4C512C8D00D2A9AF8D01D2A90F8D1C02AD1C0209A08D01D249A0D0F48D00D28D01D }260000000,978 D:BRING.BASE,695dd332BA91E20662D4C512C8D00D2A9AF8D01D2A90F8D1C02AD1C0209A08D01D249A0D0F48D00D28D01D !0100 *= $20000110 ;0120 ; *** BATTLE IN THE B RING ***0130 ;0140 ;ZERO PAGE VARIABLES0150 ;0160 PBL0 = $B00170 P}BL1 = $B10180 PBL2 = $B20190 PBH2 = $B30200 PBH0 = $B40210 PBH1 = $B50220 XP0 = $B60230 XP1 = $B70240 XP2 = } $B80250 XP3 = $B90260 PMVL = $BA0270 PMVH = $BB0280 MBL0 = $BC0290 MBL1 = $BD0300 MBL2 = $BE0310 XM0 = $BF0}320 XM1 = $C00330 XM3 = $C10340 MBL = $C20350 MBH = $C30360 STDIR = $C40370 MISDIR = $C60380 XREG = $C80390 S}CRL0 = $C90400 SCRL1 = $CA0410 SCRL2 = $CB0420 SCRL3 = $CC0430 MATH = $CD0440 INTL = $CE0450 INTH = $CF0460 ;0470 };PAGE SIX VARIABLES0480 ;0490 CHINV = $06DB0500 ADENS = $06DC0510 ASPEED = $06DD0520 SCFLAG = $06DE0530 YMENU = $06DF0}540 EXCNTR = $06E00550 LICNTR = $06E20560 ROCNTR = $06E40570 EDCNTR = $06E60580 TCCNTR = $06E80590 SSCNTR = $06E90600 R}RCNTR = $06EB0610 ESCNTR = $06EC0620 BOCNTR = $06EE0630 DECNTR = $06F00640 MXCNTR = $06F10650 LIPOS = $06F20660 ;0670 };SYSTEM EQUATES0680 ;0690 CHBAS = $02F40700 SDMCTL = $022F0710 SDLSTL = $02300720 SDLSTH = $02310730 STICK0 = $0278074}0 STRIG0 = $02840750 STRIG1 = $02850760 PCOLR0 = $02C00770 COLOR0 = $02C40780 PCOLR3 = $02C30790 PCOLR1 = $02C10800 HPO}SP0 = $D0000810 HPOSP1 = $D0010820 HPOSP2 = $D0020830 HPOSP3 = $D0030840 HPOSM0 = $D0040850 HPOSM1 = $D0050860 HPOSM2 =} $D0060870 HPOSM3 = $D0070880 M0PL = $D0080890 M3PL = $D00B0900 P0PL = $D00C0910 CONSOL = $D01F0920 HITCLR = $D01E0}930 GRACTL = $D01D0940 CHACTL = $D4010950 HSCROL = $D4040960 PMBASE = $D4070970 WSYNC = $D40A0980 AUDF1 = $D2000990 AUD}C1 = $D2011000 AUDF2 = $D2021010 AUDC2 = $D2031020 AUDF3 = $D2041030 AUDC3 = $D2051040 AUDCTL = $D2081050 RANDOM = $D20}A1060 NMIEN = $D40E1070 PRIOR = $D01B1080 SKCTL = $D20F1090 SETVBV = $E45C1100 XITVBV = $E4621110 CDTMV3 = $021C1120 C}DTMV4 = $021E1130 VDSLST = $02001140 CDTMA1 = $02261150 CDTMA2 = $02281160 ATRACT = $4D1170 ;1180 ;GAME SET-UP BEGINS1}190 ;1200 CLD 1210 LDX #31220 COLLP LDA PFCOL,X ;set1230 STA COLOR0,X ;playfield1240 LDA MSEL,X ;colors}1250 STA ADENS,X1260 DEX 1270 BPL COLLP1280 LDA #01290 STA AUDCTL ;initialize1300 LDA #3 };sounds1310 STA SKCTL1320 JMP MENU1330 DLIRTN PHA 1340 LDA SCRL11350 STA HSCROL1360 LDA #DL1&$FF13}70 STA VDSLST1380 PLA 1390 RTI 1400 DL1 PHA 1410 LDA SCRL31420 STA HSCROL1430 LDA #DL2&$FF1440} STA VDSLST1450 PLA 1460 RTI 1470 DL2 PHA 1480 LDA #2 ;turns1490 STA WSYNC ;characters1500 } STA CHACTL ;right side1510 LDA #DL3&$FF ;up bottom1520 STA VDSLST ;screen half1530 PLA 1540 RTI 155}0 DL3 PHA 1560 LDA SCRL11570 STA HSCROL1580 LDA #DL4&$FF1590 STA VDSLST1600 PLA 1610 RTI 1620 }DL4 PHA 1630 LDA SCRL01640 STA HSCROL1650 LDA #DLIRTN&$FF1660 STA VDSLST1670 PLA 1680 RTI 1690} ;1700 ;SCROLL ROUTINE-TIMER 1-FOR TOPMOST1710 ;AND BOTTOMMOST RINGS1720 ;1730 SCROLL LDA #11740 LDY ASPEED1750 } LDX #0 ;set system1760 JSR SETVBV ;timer 11770 LDA SCRL01780 CMP #91790 BNE DECC91800 RTS 18}10 DECC9 DEC SCRL0 ;scroll value1820 LDA SCRL0 ;for top and1830 BEQ PSCRL ;bottom rings1840 RTS 1850 PSCR}L LDA #8 ;reset scroll1860 STA SCRL0 ;value1870 LDX #151880 LDA $0605 ;check for1890 CMP #106 ;}wraparound1900 BEQ PFLIP ;flip1910 CLC 1920 ADC #1 ;flip to next1930 JMP HLOOP ;display byte194}0 PFLIP LDA #01950 HLOOP STA $0602,X ;store new1960 ORA #128 ;low bytes in1970 STA $0633,X ;display list1980 } EOR #1281990 DEX 2000 DEX 2010 DEX 2020 BNE HLOOP2030 RTS 2040 ;2050 ;SCROLL ROUTINE-TIMER 2-FO}R TWO2060 ;INNER RINGS AND LIGHTNING2070 ;2080 SCRLL LDA #2 ;scroll2090 LDX #0 ;routine same2100 LDY ASP}EED ;as timer 12110 DEY 2120 JSR SETVBV2130 LDA SCRL02140 CMP #92150 BNE DECCA2160 RTS 2170 D}ECCA DEC SCRL12180 LDA SCRL12190 BEQ HSCRL2200 LDA XP22210 BEQ T2XIT2220 DEC XP2 ;change2230 } LDA XP2 ;lightning2240 STA HPOSP2 ;position2250 LDX LICNTR ;value of2260 LDY #24 ;light. shape227}0 LILOOP LDA LIGHT,X ;change light.2280 STA (PBL2),Y ;shape2290 INX 2300 DEY 2310 BPL LILOOP2320 STX} LICNTR2330 CPX #75 ;light. over?2340 BNE T2XIT2350 LDX #0 ;turn off2360 STX LICNTR ;lightning}2370 STX HPOSP22380 STX XP22390 T2XIT RTS 2400 HSCRL LDA #82410 STA SCRL12420 LDX #122430 LDA $0615}2440 CMP #1062450 BEQ PFLIP32460 CLC 2470 ADC #12480 JMP MLINE2490 PFLIP3 LDA #02500 MLINE STA $06}12,X2510 ORA #1282520 STA $0626,X2530 EOR #1282540 DEX 2550 DEX 2560 DEX 2570 BNE MLINE25}80 LDA XP22590 BNE T2EXIT2600 LDA RANDOM2610 AND #152620 STA MATH2630 CLC 2640 ADC #22650 } CLC 2660 ADC $061E ;random gap2670 LDY #2 ;asteroid2680 LOCLI CMP LIPOS,Y ;position2690 BEQ PUTLI}2700 DEY ;check for2710 BPL LOCLI ;asteroid2720 RTS 2730 PUTLI LDA MATH2740 ASL A ;calcul}ate2750 ASL A ;initial2760 ASL A ;lightning2770 CLC ;position2780 ADC #562790 ST}A XP2 ;store pos.2800 STA HPOSP22810 LDA #200 ;lightning2820 STA AUDF1 ;zap sound2830 STA AUDC1}2840 LDA #42850 STA CDTMV42860 T2EXIT RTS 2870 ;2880 ;VERTICAL BLANK ROUTINE2890 ;SCROLLS ROCKET, ANIMATES FLAME}2900 ;2910 VBRTN LDA #1922920 STA NMIEN ;enable dli2930 LDA CHINV2940 STA CHACTL ;invert upper2950 L}DA SCRL0 ;screen half2960 STA HSCROL ;scroll for2970 LDA SCRL2 ;first ring2980 CMP #162990 BNE ROAR}3000 JMP XITVBV3010 ROAR LDA RRCNTR ;time to inc.3020 BEQ FLAMCK ;volume of3030 CMP #136 ;rocket roar?304}0 BEQ FLAMCK3050 INC RRCNTR3060 LDA RRCNTR3070 STA AUDC23080 FLAMCK INC SCRL23090 LDA SCRL2 ;time }to3100 AND #1 ;scroll?3110 BEQ GFLAM3120 JMP XITVBV3130 GFLAM DEC SCRL33140 LDA SCRL23150 AND }#153160 STA SCRL23170 LSR A3180 TAX ;get flame3190 LDA FLTAB,X ;shape3200 STA $1024 ;displ}ay3210 LDA XP33220 BEQ OUTCK3230 DEC XP3 ;change hot3240 LDA XP3 ;tail pos.3250 STA HPOSP33}260 OUTCK LDA SCRL33270 BEQ SCRLH3280 JMP XITVBV3290 SCRLH LDA #83300 STA SCRL33310 LDA $0622 ;rocket }on3320 CMP #11 ;screen?3330 BNE ROOFF3340 LDX #224 ;yes put hot3350 STX XP3 ;tail3360 STX} AUDF2 ;start sound3370 LDX #1293380 STX AUDC23390 STX RRCNTR3400 ROOFF CMP #36 ;rocket off3410 BNE }CKROM ;screen?3420 LDX #0 ;turn off3430 STX AUDF2 ;rocket roar3440 STX AUDC23450 STX RRCNTR3460} CKROM LDX XM3 ;missile in3470 CPX #0 ;use?3480 BNE FLIPCK ;yes go on3490 CLC ;no3500 CMP} #13 ;rocket on3510 BCC FLIPCK ;screen?3520 CLC 3530 CMP #303540 BCS FLIPCK3550 SEC 3560 S}BC #13 ;calculate3570 ASL A ;initial3580 ASL A ;missile pos.3590 ASL A3600 STA MATH3610 } LDA #2043620 SEC 3630 SBC MATH3640 STA MATH ;store pos.3650 LDX #03660 ROMLOOP CLC ;saucer in}3670 LDA PBL0,X ;gap?3680 CMP #1073690 BCC TRYAG3700 CLC 3710 CMP #1303720 BCS TRYAG3730 }CLC 3740 LDA XP0,X ;in front of3750 CMP MATH ;rocket?3760 BCC STM3 ;yes3770 TRYAG INX 3780 CPX #}23790 BNE ROMLOOP3800 JMP FLIPCK3810 STM3 LDA MATH ;fire3820 STA XM3 ;missiles3830 STA HPOSM33840} LDA #38 ;missile3850 STA AUDF1 ;sound3860 LDA #1423870 STA AUDC13880 LDA #53890 STA CDTMV}43900 FLIPCK LDA $06223910 CMP #633920 BEQ PFLIP53930 CLC 3940 ADC #13950 JMP MLINE33960 PFLIP5 LD}A #03970 MLINE3 STA $06223980 STA $06253990 VBOUT JMP XITVBV4000 ;4010 ;MAIN PROGRAM BEGINS HERE4020 ;4030 PROG LD}X #31 ;zero out4040 LDA #0 ;zero page+4050 CLZLOOP STA PBL0,X ;page 64060 STA EXCNTR,X ;variables4070 } DEX 4080 BPL CLZLOOP4090 LDA #9 ;no scroll4100 STA SCRL0 ;until ready4110 LDA #16 ;to play41}20 STA SCRL24130 LDA #44140 STA CHINV4150 LDA #04160 TAX 4170 TAY 4180 LDA #244190 STA} PMBASE ;pm graphics4200 LDA #27 ;location4210 STA MBH ;missiles4220 LDA #284230 STA PBH0 ;pl}ayer 04240 LDA #294250 STA PBH1 ;player 14260 LDA #304270 STA PBH2 ;player 24280 LDA #2244290} STA INTH4300 LDA #18 ;character4310 STA PMVH ;set on4320 STA CHBAS ;page 184330 LDA #04340 } STA PMVL4350 STA INTL4360 TAX 4370 TAY 4380 DWNLD LDA (INTL),Y ;download rom4390 STA (PMVL),Y ;char }acters4400 INY 4410 BNE DWNLD4420 INC PMVH4430 INC INTH4440 INX 4450 CPX #24460 BNE DWNLD }4470 DEC PMVH4480 DEC PMVH4490 LDY #04500 LDA #84510 STA PMVL4520 CHLOOP LDA CHTAB,Y ;load data for }4530 STA (PMVL),Y ;asteroid4540 INY ;characters4550 CPY #1204560 BNE CHLOOP4570 LDX #04580  } LDY #2084590 STX PMVL4600 C2LOOP LDA C2TAB,X ;load data for4610 STA (PMVL),Y ;rocket4620 INX ;char}acters4630 CPX #564640 BEQ RESET4650 INY 4660 BNE C2LOOP4670 INC PMVH4680 JMP C2LOOP4690 RESET} LDX #774700 LDY #04710 STY SDMCTL4720 DLOOP LDA GDLIST,X ;load game4730 STA $0600,X ;display4740 DEX } ;list onto4750 BPL DLOOP ;page six4760 LDA #6 ;tell comp.4770 STY SDLSTL ;where dlist4780 S}TA SDLSTH ;is4790 LDA $06064800 STA PMVH4810 STY PMVL4820 TYA 4830 TAX 4840 CLOOP STA (PMVL),Y ;cl}ear4850 INY ;display4860 BNE CLOOP ;area4870 INC PMVH4880 INX 4890 CPX #114900 BNE CL}OOP4910 LDX #04920 LDA $06064930 STA PMVH4940 LDA ADENS4950 STA INTH4960 STX PMVL4970 RANDC LD}A RANDOM ;color for4980 AND #3 ;asteroid4990 TAY ;character5000 LDA COLOR,Y5010 STA INTL502}0 RANDP CLC 5030 LDY RANDOM ;random5040 CPY #107 ;position5050 BCS RANDP5060 LDA (PMVL),Y5070 CM}P #0 ;occupied?5080 BNE RANDP ;yes go back5090 RANDA LDA RANDOM ;random5100 AND #15 ;asteroid5110 }BEQ RANDA ;character5120 ORA INTL5130 STA (PMVL),Y ;store in5140 INX ;display5150 CPX INTH ;}line done?5160 BNE RANDC5170 LDX #05180 CLC 5190 LDA PMVL5200 ADC #128 ;do next line5210 STA} PMVL5220 BCC ASKIP5230 INC PMVH5240 ASKIP LDA PMVH5250 CMP $061F5260 BNE AENDCK5270 LDY INTH5280 } DEY 5290 DEY 5300 DEY 5310 STY INTH5320 AENDCK CMP $0626 ;all lines5330 BNE RANDC ;done?5340 }LDA $061F5350 STA PMVH5360 RANDC2 LDA RANDOM ;same as5370 AND #3 ;above but5380 TAY ;for5390 } LDA COLOR,Y ;asteroids5400 STA INTL ;across gap5410 LDA RANDOM ;from each5420 AND #3 ;other for543}0 TAY ;lightning5440 LDA COLOR,Y5450 STA INTH5460 RANDP2 CLC 5470 LDA RANDOM5480 BEQ RANDP2}5490 CMP #1055500 BCS RANDP25510 STA PMVL5520 STA LIPOS,X5530 LDY #05540 LDA (PMVL),Y5550 B}NE RANDP25560 RANDA2 LDA RANDOM5570 AND #155580 BEQ RANDA25590 ORA INTL5600 STA (PMVL),Y5610 RANDA3 LDA } RANDOM5620 AND #155630 BEQ RANDA35640 ORA INTH5650 LDY #1285660 STA (PMVL),Y5670 INX 5680 !} CPX #35690 BNE RANDC25700 LDA #05710 LDX #185720 CLRAST STA $0700,X ;clear lines5730 STA $0780,X ;sauce"}r start5740 DEX ;positions5750 BPL CLRAST5760 LDY #205770 LDA $06065780 STA PMVH5790 ST#}A INTH5800 LDA #1075810 STA INTL5820 INX 5830 STX PMVL5840 WLOOP LDA (PMVL),Y ;wraparound5850 STA ($}INTL),Y ;display5860 DEY ;area for5870 BPL WLOOP ;continuous5880 LDY #20 ;scrolling5890 INX%} 5900 LDA PMVL5910 CLC 5920 ADC #1285930 STA PMVL5940 BCC WSKIP15950 INC PMVH5960 WSKIP1 LDA I&}NTL5970 CLC 5980 ADC #1285990 STA INTL6000 BCC WSKIP26010 INC INTH6020 WSKIP2 CPX #18 ;finished?6'}030 BNE WLOOP ;no go back6040 LDY #36050 ROLOOP LDA ROTAB,Y ;load rocket6060 STA $1020,Y ;data into6070 (} DEY ;display area6080 BPL ROLOOP6090 LDA #166100 STA $0664 ;initialize6110 STA $066E ;scores)}6120 LDA #06130 TAX 6140 STA $06636150 STA $066D6160 LDA #246170 STA PMVH6180 TXA 6190 *} STA PMVL6200 TAY 6210 CLRPMG STA (PMVL),Y ;clear pm6220 INY ;graphics6230 BNE CLRPMG ;area6240 +} INC PMVH6250 INX 6260 CPX #86270 BNE CLRPMG6280 LDX #56290 LDA #06300 ZLOOP STA HPOSP2,X ;iniiali,}ze6310 DEX ;player/6320 BPL ZLOOP ;missile6330 LDA #1086340 STA PBL26350 LDA #3 ;set -}up6360 STA GRACTL ;graphics6370 LDA #62 ;dma6380 STA SDMCTL6390 STA HITCLR ;clr collis.6400 LD.}A #120 ;initialize6410 STA HPOSP1 ;saucer6420 STA XP1 ;positions6430 STA HPOSP06440 STA XP06450 /} LDA #1966460 STA PBL16470 LDA #356480 STA PBL06490 STA PMVL6500 LDA PBH06510 STA PMVH6520 0} LDA PBL16530 STA INTL6540 LDA PBH16550 STA INTH6560 LDY #76570 LDPLYRS LDA PLSHP,Y ;load6580 ST1}A (PMVL),Y ;player6590 STA (INTL),Y ;data into6600 DEY ;pm area6610 BPL LDPLYRS6620 INC INTH66302} INC INTH6640 LDY #1166650 LDA #06660 STA INTL6670 LDA #16680 LDTAIL STA (INTL),Y ;load hot6690 3} INY ;rocket6700 CPY #124 ;tail6710 BNE LDTAIL6720 LDY #1126730 LDA #1926740 STA (MBL),Y4}6750 LDY #1276760 STA (MBL),Y6770 LDX #36780 PCLOOP LDA PCOL,X ;set playr6790 STA PCOLR0,X ;colors6800 5} DEX 6810 BPL PCLOOP6820 LDA #8 ;initialize6830 STA HSCROL ;scroll6840 STA SCRL1 ;settings68506} STA SCRL36860 STA CONSOL6870 STA STDIR+16880 LDA #96890 STA STDIR6900 ;6910 ;SET SYSTEM TIMERS,697}20 ;VERT. BLANK AND DLI ROUTINES6930 ;6940 LDA #SCROLL&$FF ;timer 16950 STA CDTMA16960 LDA #SCROLL/2566970 8} STA CDTMA1+16980 LDA #16990 LDX #07000 LDY #47010 JSR SETVBV7020 LDA #SCRLL&$FF ;timer 27030 9} STA CDTMA27040 LDA #SCRLL/2567050 STA CDTMA2+17060 LDA #27070 LDX #07080 LDY #37090 JSR SETVBV:}7100 LDA #77110 LDX #VBRTN/256 ;vertical7120 LDY #VBRTN&$FF ;blank7130 JSR SETVBV7140 LDA #DLIRTN/25;}67150 STA VDSLST+17160 LDA #DLIRTN&$FF7170 STA VDSLST7180 LDA #192 ;dli7190 STA NMIEN7200 LD<}A #1 ;set pmg7210 STA PRIOR ;priority7220 STLOOP LDA STRIG0 ;check7230 BNE SB2CK ;triggers7240 JMP G=}ETDEL ;for game7250 SB2CK LDA STRIG1 ;start7260 BNE STLOOP7270 GETDEL LDA #157280 STA CDTMV37290 DSTLOOP LDA CD>}TMV37300 BNE DSTLOOP7310 STA SCRL2 ;allow7320 LDA #8 ;scrolling7330 STA SCRL07340 MLOOP LDA #1 ?} ;game prog7350 STA CDTMV3 ;begins7360 INC XREG ;move timer7370 LDA XREG ;playr index7380 AND #17@}390 TAX 7400 STA XREG7410 LDA XP0,X ;check for7420 BNE TAILCK ;dead player7430 JMP INCM7440 TAILCA}K LDA SCRL2 ;check for7450 CMP #16 ;missile7460 BNE EXPCK ;collision7470 INC TCCNTR ;with rocket7480 B} LDA TCCNTR ;tail7490 AND #31 ;time to7500 STA TCCNTR ;cool tail?7510 BNE EXPCK ;no go on7520 LC}DA PCOLR37530 CMP #1487540 BEQ EXPCK7550 DEC PCOLR3 ;cool tail7560 EXPCK LDA EXCNTR,X ;check count7570 D}BEQ BOUNCK ;for player7580 INC EDCNTR,X ;explosion7590 LDA EDCNTR,X7600 AND #3 ;time to7610 STA EDCE}NTR,X ;change exp?7620 BNE EXLCK ;no go on7630 LDY SNDX,X ;change sound7640 LDA ESCNTR,X ;get sound7650 F} CMP #128 ;finished?7660 BEQ EXSNOFF ;yes off7670 DEC ESCNTR,X ;no make7680 LDA ESCNTR,X ;changes7690 G} STA AUDC3,Y7700 JMP EXLCK7710 EXSNOFF LDA #0 ;turn sound7720 STA AUDF3,Y ;off7730 STA AUDC3,Y7740 STA H}ESCNTR,X7750 EXLCK LDA PCOLR0,X ;change7760 CMP #159 ;color7770 BEQ BLINC7780 INC PCOLR0,X7790 INC PCI}OLR0,X7800 INC PCOLR0,X7810 JMP INCM7820 BLINC LDA EDCNTR,X7830 AND #17840 BEQ BLJUMP7850 JMP INCMJ}7860 BLJUMP JMP BLPL7870 BOUNCK LDA BOCNTR,X ;check for7880 BEQ RMCK ;bounce7890 JMP REBOUND7900 RMCK LDA M3PLK} ;check for7910 BEQ PLPLCK ;collision7920 LDY #0 ;with7930 STY XM3 ;rocket's7940 STY HPOSM3 L};missiles7950 STY HITCLR7960 CMP #47970 BEQ PLPLCK7980 TAX 7990 DEX ;rocket's7940 STY HPOSM3 ^8000 STX MBL8010 LDY #68020 JSR MOVPLYR8030 LDX MBL8040 JSR EXPLO8050 LDX XREG8060 PLPLCK LDA PN}0PL,X ;check for8070 BEQ MPFCK ;player/8080 CMP #4 ;player8090 BNE PL8CK ;collisions8100 JMP PBLO}PL8110 PL8CK CMP #8 ;hit hot8120 BNE DOTWO ;tail?8130 LDA PCOLR38140 CMP #1488150 BEQ YOTHER8160 P} JMP PBLPL ;yes kill8170 YOTHER LDY OTHER,X ;no tail8180 LDA XP0,Y ;cool game8190 STA HITCLR ;over8200 Q} BNE IJUMP8210 JMP ENDIT8220 IJUMP JMP INCM8230 DOTWO JMP BLBOTH ;kill both8240 MPFCK LDA HPOSP0,X ;check for8250 R} BEQ MPLCK ;missile/8260 JSR MISEXP ;playfield8270 JSR EXSOUND ;collisions8280 JSR TOM ;missile off82S}90 MPLCK LDA M0PL,X ;check for8300 BEQ PLPFCK ;missile/8310 CMP #4 ;player8320 BNE M8CK ;collisions8T}330 JSR TOM8340 JMP PLPFCK8350 M8CK CMP #8 ;hit tail?8360 BNE PLEX ;no go on8370 JSR TOM ;yes U}stop8380 LDA #16 ;rocket8390 STA SCRL28400 LDA #08410 STA $10248420 STA AUDF28430 STA AUDC2V}8440 JMP PLPFCK8450 PLEX LDY MISDIR,X ;hit saucer8460 TAX 8470 DEX 8480 LDA EXCNTR,X ;dead yet?8490 W} BEQ MSCOR ;no score it8500 JMP INCM ;yes8510 MSCOR JSR MOVPLYR ;move plyr8520 TXA 8530 LSR A8540 TX}AX 8550 JSR EXPLO ;add score8560 LDX XREG8570 JSR MISEXP8580 JSR TOM ;missile off8590 PLPFCK LDA HY}POSM0,X ;check for8600 BEQ STRCK ;player/8610 STA HITCLR ;playfield8620 JSR EXSOUND ;collisions8630 LDZ}A SCFLAG ;scoring?8640 BNE REBOUND ;no go on8650 JSR EXPLO ;yes score8660 REBOUND INC BOCNTR,X ;bounce8670 [} LDA BOCNTR,X ;plyr off8680 CMP #4 ;rocks?8690 BNE RUBBER ;yes8700 LDA #0 ;no end8710 STA BOCN\}TR,X ;bounce8720 RUBBER LDA STDIR,X ;bounce plyr8730 TAY 8740 LDA BOUNCE,Y8750 CMP #68760 BNE DOTAY8770]} CLC 8780 LDA PBL0,X8790 CMP #1178800 LDA #48810 BCS DOTAY8820 LDA #58830 DOTAY TAY 8840 J^}SR MOVPLYR8850 JMP INCM8860 STRCK LDA STRIG0,X ;check8870 BNE STIK ;triggers8880 STA ATRACT ;no attract8_}890 LDA XM0,X ;missile8900 BNE STIK ;already in8910 JMP MISL ;use?8920 STIK LDA STICK0,X ;check8930 `} CMP #15 ;joysticks8940 BNE GSTIK ;no move8950 JSR ROTOR8960 JMP INCM8970 GSTIK SEC ;yes8980 a} SBC #5 ;get8990 TAY ;movement9000 STA STDIR,X ;index9010 JSR MOVPLYR9020 JMP INCM9030 MOb}VPLYR LDA XP0,X9040 CLC 9050 ADC PXDIR,Y ;check limits9060 CMP #1939070 BEQ RAISE9080 CMP #479090 c} BEQ RAISE9100 STORX STA HPOSP0,X ;player9110 STA XP0,X ;horiz. move9120 RAISE LDA PBH0,X9130 STA PMVH9140 d} LDA PBL0,X9150 CLC 9160 ADC PYDIR,Y9170 CMP #1979180 BEQ ROTOR9190 CMP #349200 BEQ ROTOR921e}0 STA PMVL9220 STA PBL0,X9230 LDY #79240 PLOOP LDA PLSHP,Y ;player9250 STA (PMVL),Y ;vert. move9260 f}DEY 9270 BPL PLOOP9280 INC ROCNTR,X9290 LDA ROCNTR,X9300 AND #79310 STA ROCNTR,X9320 TAY 9330 g} LDA ROTATE,Y9340 LDY #49350 STA (PMVL),Y ;rotate9360 LDA SSCNTR,X ;saucer9370 BEQ DOROT ;center938q}BJDOS SYSB NSINE1 BASB[SINE2 BASBLtBRING BASBBRING1 ASMBMBRING2 ASMBSNS BASBQSNS ASMB ITOUCHTONBASBTBOOT4 ASMBVBOOT5 ASMBYBOOT6 ASMB\BOOT7 ASMB`BOOT9 ASMBbBOOT11 ASMBfDEFAULT BASB+nSIEGE BASB A 3D BTOWER 3D B ROT3D LST0 RTS 9390 DOROT LDA ROCNTR,X9400 AND #19410 TAY 9420 LDA SNDX,X9430 TAX 9440 LDA MSAUSND,Y ;mor}ving9450 STA AUDF3,X ;saucer9460 LDA #165 ;sound9470 STA AUDC3,X9480 RTS 9490 ROTOR LDA PBL0,X ;slowes}r9500 STA PMVL ;stationary9510 LDA PBH0,X ;rotate9520 STA PMVH9530 INC ROCNTR,X9540 LDA ROCNTR,Xt}9550 AND #159560 STA ROCNTR,X9570 LSR A9580 TAY 9590 LDA ROTATE,Y9600 LDY #49610 STA (PMVLu}),Y9620 LDA SSCNTR,X9630 BEQ DOROT29640 RTS 9650 DOROT2 LDA ROCNTR,X9660 AND #39670 LSR A9680 v}TAY 9690 LDA SNDX,X9700 TAX 9710 LDA SSAUSND,Y9720 STA AUDF3,X ;stationary9730 LDA #165 ;sound97w}40 STA AUDC3,X9750 RTS 9760 INCM LDA XM0 ;check9770 BEQ CKM1 ;missile 09780 LDX #0 ;movement9x}790 JSR GDIR9800 CKM1 LDA XM1 ;check9810 BEQ CKM3 ;missile 19820 LDX #1 ;movement9830 JSR GDIRy}9840 CKM3 LDA XM3 ;check9850 BEQ NEXIT ;missile 29860 DEC XM3 ;movement9870 LDA XM39880 STA HPOz}SM39890 NEXIT LDA CDTMV4 ;check sound9900 BNE BUTCK ;timer9910 STA AUDF19920 STA AUDC19930 BUTCK LDA CONSO{}L ;check9940 CMP #7 ;console9950 BEQ SHOTSND9960 JMP ENDIT9970 SHOTSND LDA SSCNTR ;check shot9980 B|}EQ SHOTSND2 ;sound9990 LDX #0 ;counter010000 JSR INCSHOT010010 SHOTSND2 LDA SSCNTR+1010020 BEQ TOMEX010030 }} LDX #1010040 JSR INCSHOT010050 TOMEX LDA MBL2 ;check for010060 BEQ EXIT ;end of010070 INC MXCNTR ;missile010~}080 LDA MXCNTR ;explosion010090 AND #3010100 STA MXCNTR010110 BNE EXIT010120 LDA MBL2010130 STA MBL010140 } LDA #0010150 STA HPOSM2010160 STA MBL2010170 LDY #4010180 TOMLOOP LDA (MBL),Y010190 EOR MXSHP,Y010200 STA (}MBL),Y010210 DEY 010220 BPL TOMLOOP010230 EXIT LDA CDTMV3 ;check010240 BNE EXIT ;move timer010250 JMP MLOOP } ;start over010260 INCSHOT INC SSCNTR,X ;change shot010270 INC SSCNTR,X ;sound010280 LDA SSCNTR,X010290 CMP #48010}300 BEQ ENDSHOT010310 LDY SNDX,X010320 STA AUDF3,Y010330 RTS 010340 ENDSHOT LDA #0 ;turn off010350 STA SSCNTR,}X ;shot sound010360 RTS 010370 MISEXP LDA MBL2 ;check miss.010380 BEQ DOEXP ;explosion010390 RTS ;in use}010400 DOEXP LDA XM0,X ;load010410 STA HPOSM2 ;missile010420 LDA MBL0,X ;explosion010430 SEC ;data010440 } SBC #2010450 STA MBL2010460 STA MBL010470 LDY #4010480 MIXLOOP LDA (MBL),Y010490 ORA MXSHP,Y010500 STA (MBL}),Y010510 DEY 010520 BPL MIXLOOP010530 RTS 010540 MISL CLC ;determine010550 LDA XP0 ;missile010560 C}MP XP1 ;direction010570 LDA MDIR1,X010580 BCC GETDIR010590 LDA MDIR2,X010600 GETDIR STA MISDIR,X010610 LDY S}NDX,X010620 LDA #8010630 STA AUDF3,Y010640 STA SSCNTR,X010650 LDA #139010660 STA AUDC3,Y010670 LDY MISDIR,X}010680 LDA XP0,X ;initial010690 CLC ;missile010700 ADC MSPOS,Y ;position010710 STA XM0,X010720 LDA P}BL0,X010730 CLC 010740 ADC #5010750 STA MBL0,X010760 STA MBL010770 LDY #0010780 LDA (MBL),Y ;load010790 }ORA MSSHP,X ;missile010800 STA (MBL),Y ;data010810 JMP STIK010820 EXPLO JSR EXSOUND010830 LDY SCORE,X010840 LDA }$0664,Y ;get score010850 CLC 010860 ADC #1 ;add one010870 CMP #26 ;10 yet?010880 BEQ NEXP ;yes kill0}10890 STA $0664,Y ;no store010900 RTS 010910 NEXP LDA #16010920 STA $0664,Y010930 LDA #17010940 STA $0663,Y01}0950 PLA ;pull return010960 PLA ;address010970 PBLPL JSR EXSOUND010980 LDY SNDX,X010990 LDA #200 } ;start011000 STA AUDF3,Y ;explosion011010 LDA #143 ;sound011020 STA AUDC3,Y011030 STA ESCNTR,X011040 LDA} #144 ;change011050 STA PCOLR0,X ;color011060 BLPL LDA PBL0,X011070 STA PMVL011080 LDA PBH0,X011090 STA PMVH}011100 STX MBL011110 LDA EXCNTR,X011120 TAX 011130 LDY #7011140 BLO1 LDA EXSHP,X ;load011150 STA (PMVL),Y ;exp}losion011160 INX ;shape011170 DEY 011180 BPL BLO1011190 CPX #64 ;finished?011200 BEQ EXOFF011210 } TXA 011220 LDX MBL011230 STA EXCNTR,X ;store data011240 JMP INCM ;number011250 EXOFF LDA #0 ;turn off011260 } LDX XREG ;explosion011270 STA EXCNTR,X011280 STA HPOSP0,X ;player off011290 STA XP0,X ;screen011300 STA PB}L0,X011310 STA HITCLR011320 LDY SNDX,X011330 STA AUDF3,Y011340 STA AUDC3,Y011350 INC DECNTR011360 LDA DECNT}R011370 CMP #2 ;both dead?011380 BNE GOBACK ;no go back011390 JMP ENDIT ;game over011400 GOBACK JMP INCM01}1410 EXSOUND LDA #200 ;collision011420 STA AUDF1 ;sound011430 LDA #142011440 STA AUDC1011450 TIMER LDA #5 ;set s}ound011460 STA CDTMV4 ;timer011470 RTS 011480 BLBOTH JSR EXSOUND ;saucers011490 LDX #0 ;collided011500 LDY} #0 ;kill both011510 LDA #158011520 STA PCOLR0011530 STA PCOLR1011540 LDA PBL1011550 STA PMVL011560 LD}A PBH1011570 STA PMVH011580 LDA PBH0011590 STA PBL1011600 BLO3 LDA EXSHP,X011610 STA (PMVL),Y011620 STA (PBL0}),Y011630 INX 011640 INY 011650 CPY #8011660 BNE BLO3011670 LDA #2011680 STA CDTMV4011690 LDY #0011700 }TIMCKB LDA CDTMV4011710 BNE TIMCKB011720 CPX #64011730 BNE BLO3011740 JMP ENDIT ;game over011750 GDIR LDY MISD}IR,X ;get011760 LDA XM0,X ;direction011770 CLC 011780 ADC PXDIR,Y011790 CMP #220 ;check011800 BEQ TOM } ;limits011810 MXLCK CMP #40011820 BEQ TOM011830 STA XM0,X ;move missile011840 STA HPOSM0,X011850 RTS 011860 }TOM LDA #0 ;turn off011870 STA HPOSM0,X ;missile011880 STA XM0,X011890 STA HITCLR011900 TAY 011910 LDA MBL0},X011920 STA MBL011930 LDA (MBL),Y011940 EOR MSSHP,X011950 STA (MBL),Y011960 RTS 011970 ENDIT LDA #30011980 } STA CDTMV3011990 ENTCK LDA CDTMV3012000 BNE ENTCK012010 LDY #7012020 ENDLP STA HPOSP0,Y ;all plyrs012030 STA AUD}F1,Y ;off screen012040 DEY ;sound off012050 BPL ENDLP012060 LDA #16 ;stop012070 STA SCRL2 ;scrolls}012080 LDA #9012090 STA SCRL0012100 JMP MENU012110 ;012120 ;ASTEROID CHARACTER DATA012130 ;012140 CHTAB012150 }.BYTE 0,24,56,127,126,24,60,32012160 .BYTE 0,28,126,127,60,24,0012170 .BYTE 0,0,16,60,120,8,0,0012180 .BYTE 0,0,24,1}26,62,124,100,0012190 .BYTE 24,62,124,60,24,126,60,120012200 .BYTE 0,96,124,56,60,126,6,0012210 .BYTE 28,60,30,60,12}6,126,56,0012220 .BYTE 0,0,16,56,28,0,0,0012230 .BYTE 0,0,24,32,0,0,0,0012240 .BYTE 0,0,56,126,24,48,0,0012250 .B}YTE 0,0,0,24,60,126,120,0012260 .BYTE 0,60,62,30,124,56,32,0012270 .BYTE 0,0,0,0,63,110,52,0012280 .BYTE 0,24,120,60},62,28,0,0012290 .BYTE 0,124,62,60,28,62,120,0012300 ;012310 ;SAUCER SHAPE012320 ;012330 PLSHP012340 .BYTE 0,16,56,}254,254,254,56,0012350 ;012360 ;EXPLOSION SHAPES012370 ;012380 EXSHP012390 .BYTE 0,8,64,24,254,170,254,48012400 .BY}TE 4,128,36,128,126,170,253,16012410 .BYTE 0,36,0,82,44,41,60,64012420 .BYTE 36,0,145,8,66,42,74,16012430 .BYTE 34,1}45,0,16,129,82,0,146012440 .BYTE 137,32,128,1,64,2,128,81012450 .BYTE 64,1,0,128,0,0,65,128012460 .BYTE 0,0,0,0,0,0,}0,0012470 PLINE .BYTE 0,0,$30,$2C,$39,$32012480 .BYTE 0,$11,0,0,0,0,$30,$2C,$39012490 .BYTE $32,0,$12,0,0012500 ;012}510 ;MOVEMENT INDEXES012520 ;012530 PXDIR .BYTE 1,1,1,0,255,255,255,0,0,0012540 PYDIR .BYTE 1,255,0,0,1,255,0,0,1,2550125}50 ;012560 ;BOUNCE MOVEMENT INDEXES012570 ;012580 BOUNCE .BYTE 1,0,6,0,5,4,2,0,9,8012590 MSPOS .BYTE 0,0,9,0,0,0,2540126}00 COLOR .BYTE 0,64,128,192012610 ;012620 ;ROCKET CHARACTER DATA012630 ;012640 C2TAB .BYTE 255,63,31,0,0,0,0,0012650 .}BYTE 255,255,255,0,0,0,0,0012660 .BYTE 255,255,255,31,15,7,3,7012670 .BYTE 254,254,222,2,0,0,0,0012680 .BYTE 252,248},240,224,0,0,0,0012690 .BYTE 254,252,248,240,0,0,0,0012700 .BYTE 248,240,224,192,0,0,0,0012710 ;012720 ;MISSILE MOVEM}ENT INDEXES012730 ;012740 MDIR1 .BYTE 2,6012750 MDIR2 .BYTE 6,2012760 ROTAB .BYTE 154,27,28,221012770 FLTAB .BYTE 159,15}8,160,0,0,0,0,0012780 ;012790 ;LIGHTNING SHAPE DATA012800 ;012810 LIGHT .BYTE 16,8,16,24,8,16,8,16,8012820 .BYTE 8,16,}8,16,16,16,24,8012830 .BYTE 16,8,8,4,8,16,8,16012840 .BYTE 8,16,16,8,16,8,16,16,24012850 .BYTE 8,16,8,16,8,8,16,801}2860 .BYTE 16,8,8,24,16,16,8,8012870 .BYTE 4,16,8,8,16,8,16,8,4012880 .BYTE 8,16,32,32,24,8,16,12012890 .BYTE 4,8,}16,8,16,16,8,8012900 SCORE .BYTE 0,10012910 OTHER .BYTE 1,0012920 ;012930 ;ROTATING SAUCER CENTER DATA012940 ;012950 RO}TATE .BYTE 126,190,222,238,246,250,252,254012960 SNDX .BYTE 0,2012970 MSAUSND .BYTE 160,170012980 SSAUSND .BYTE 180,19001}2990 MSSHP .BYTE 3,12013000 MXSHP .BYTE 32,16,48,48,32,16013010 PCOL .BYTE 202,70,158,158013020 MSEL .BYTE 10,4,0,0013030} PFCOL .BYTE 40,37,68,121013040 ;013050 ;DISPLAY LIST INTERRUPT ALLOWS013060 ;RINGS TO SCROLL INDIVIDUALLY013070 ;013080} ;GAME DISPLAY LIST013090 ;013100 GDLIST .BYTE 112,112,112,32,86,0,7013110 .BYTE 86,0,8,86,0,9,86,0,10013120 .BYTE 86},0,11,128,86,0,12,86,0,13013130 .BYTE 86,0,14,86,0,15,176013140 .BYTE 214,0,16,86,0,16,176013150 .BYTE 86,128,15,86,}128,14013160 .BYTE 86,128,13,86,128,12,128013170 .BYTE 86,128,11,86,128,10013180 .BYTE 86,128,9,86,128,8013190 .B}YTE 86,128,7,70013200 .WORD PLINE013210 .BYTE 70,96,6,32,65,0,6013220 ;013230 ;MENU DISPLAY LIST013240 ;013250 MDLI}ST .BYTE 112,112,112,112,71013260 .WORD TITL013270 .BYTE 7,112,70013280 .WORD AUTH013290 .BYTE 112,112,71013300 } .WORD COLLISY013310 .BYTE 71013320 .WORD SCORY013330 .BYTE 112,71013340 .WORD RINGD013350 .BYTE 71013360 }.WORD LOW013370 .BYTE 112,71013380 .WORD RINGS013390 .BYTE 71013400 .WORD SLOW013410 .BYTE 112,65013420 .WO}RD MDLIST013430 TITL .BYTE 0,0,0,0,0,$62,$61,$74013440 .BYTE $74,$6C,$65,0,$69,$6E,0,0013450 .BYTE 0,0,0,0,0,0,0,0,0,$}74,$68013460 .BYTE $65,0,$62,0,$72,$69,$6E013470 .BYTE $67,0,0013480 AUTH .BYTE 0,0,0,34,57,0,44,37,55,0013490 .BYT}E 52,40,47,45,41,52,51013500 ;013510 ;MENU SELECTIONS013520 ;013530 RINGD .BYTE 0,0,0,0,$F2,$E9,$EE,$E7013540 .BYTE 0,}$E4,$E5,$EE,$F3,$E9,$F4,$F9013550 RINGS .BYTE 0,0,0,0,0,$F2,$E9,$EE,$E7013560 .BYTE 0,$F3,$F0,$E5,$E5,$E4013570 LOW .BYT}E 0,0,0,0,0,0,0,0,$AC,$AF,$B7013580 .BYTE 0,0013590 MEDIUM .BYTE 0,0,0,0,0,0,0,$AD,$A5,$A4013600 .BYTE $A9,$B5,$AD013}610 HIGH .BYTE 0,0,0,0,0,0,0,0,$A8,$A9,$A7013620 .BYTE $A8,0013630 SLOW .BYTE 0,0,0,0,0,0,0,0,$B3,$AC,$AF,$B7013640 FAST} .BYTE 0,0,0,0,0,0,0,0,$A6,$A1,$B3013650 .BYTE $B4,0,0,0,0013660 RINGDY .BYTE 0,0,0,0,$32,$29,$2E,$27013670 .BYTE 0,$2}4,$25,$2E,$33,$29,$34,$39013680 RINGSY .BYTE 0,0,0,0,0,$32,$29,$2E,$27013690 .BYTE 0,$33,$30,$25,$25,$24013700 COLLIS .B}YTE 0,0,0,0,0,$E3,$EF,$EC,$EC013710 .BYTE $E9,$F3,$E9,$EF,$EE,$F3013720 COLLISY .BYTE 0,0,0,0,0,$23,$2F,$2C013730 .BYT}E $2C,$29,$33,$29,$2F,$2E,$33013740 SCORY .BYTE 0,0,0,0,0,0,0,$B3,$A3,$AF013750 .BYTE $B2,$A9,$AE,$A7,0013760 SCORN .BYT}E 0,0,0,0,0,$AE,$AF,$AE,$B3013770 .BYTE $A3,$AF,$B2,$A9,$AE,$A7,0,0,0,0,0013780 MENU LDA #0013790 STA SDMCTL013800 }LDY YMENU013810 LDA #224013820 STA CHBAS013830 LDA #2013840 STA CHINV013850 LDA #MDLIST&$FF013860 LDX #MDLI}ST/256013870 STA SDLSTL013880 STX SDLSTH013890 LDA #62013900 STA SDMCTL013910 CONCK LDA CONSOL013920 CMP #60}13930 BNE OPTCK013940 STY YMENU013950 LDA #20013960 JSR BELL013970 JMP PROG013980 OPTCK CMP #3013990 BNE SE}LCK014000 CPY #1014010 BEQ OPT1014020 CPY #2014030 BEQ OPT2014040 LDA #COLLIS&$FF014050 LDX #COLLIS/256014}060 STA MDLIST+15014070 STX MDLIST+16014080 LDA #RINGDY&$FF014090 LDX #RINGDY/256014100 STA MDLIST+22014110 }STX MDLIST+23014120 JMP OPOUT014130 OPT1 LDA #RINGD&$FF014140 LDX #RINGD/256014150 STA MDLIST+22014160 STX MDLIS}T+23014170 LDA #RINGSY&$FF014180 LDX #RINGSY/256014190 STA MDLIST+29014200 STX MDLIST+30014210 JMP OPOUT01422}0 OPT2 LDA #RINGS&$FF014230 LDX #RINGS/256014240 STA MDLIST+29014250 STX MDLIST+30014260 LDA #COLLISY&$FF014270 } LDX #COLLISY/256014280 STA MDLIST+15014290 STX MDLIST+16014300 OPOUT INY 014310 CPY #3014320 BNE JBELL014330 } LDY #0014340 JBELL LDA #40014350 JSR BELL014360 JMP CONCK014370 SELCK CMP #5014380 BNE CONCK014390 CPY #1014}400 BEQ SEL1014410 CPY #2014420 BEQ SEL2014430 LDA SCFLAG014440 BEQ NOSCOR014450 LDA #0014460 STA SCFLAG}014470 LDA #SCORY&$FF014480 LDX #SCORY/256014490 STA MDLIST+18014500 STX MDLIST+19014510 JMP SELOUT014520 NOSC}OR LDA #1014530 STA SCFLAG014540 LDA #SCORN&$FF014550 LDX #SCORN/256014560 STA MDLIST+18014570 STX MDLIST+190}14580 JMP SELOUT014590 SEL1 LDA ADENS014600 CMP #10014610 BEQ MEDSEL014620 CMP #12014630 BEQ HISEL014640 LD}A #10014650 STA ADENS014660 LDA #LOW&$FF014670 LDX #LOW/256014680 STA MDLIST+25014690 STX MDLIST+26014700 J}MP SELOUT014710 MEDSEL LDA #12014720 STA ADENS014730 LDA #MEDIUM&$FF014740 LDX #MEDIUM/256014750 STA MDLIST+250}14760 STX MDLIST+26014770 JMP SELOUT014780 HISEL LDA #14014790 STA ADENS014800 LDA #HIGH&$FF014810 LDX #HIGH/2}56014820 STA MDLIST+25014830 STX MDLIST+26014840 JMP SELOUT014850 SEL2 LDA ASPEED014860 CMP #4014870 BEQ FAST}SEL014880 LDA #4014890 STA ASPEED014900 LDA #SLOW&$FF014910 LDX #SLOW/256014920 STA MDLIST+32014930 STX MDL}IST+33014940 JMP SELOUT014950 FASTSEL LDA #3014960 STA ASPEED014970 LDA #FAST&$FF014980 LDX #FAST/256014990 S}TA MDLIST+32015000 STX MDLIST+33015010 SELOUT LDA #30015020 JSR BELL015030 JMP CONCK015040 BELL STA AUDF1015050 } LDA #175015060 STA AUDC1015070 LDA #15015080 STA CDTMV3015090 BTIME LDA CDTMV3015100 ORA #160015110 STA AUDC}1015120 EOR #160015130 BNE BTIME015140 STA AUDF1015150 STA AUDC1015160 RTS 15100 ORA #160015110 STA AUDC[12 DSDATHEXLINDATLIDDBYTPASCHKSUTOTAIN@} $$*** SATURDAY NIGHT SPECIAL ***990,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0,0},10,11,12,13,14,15r;@,9@",/-@"3"<68,-@ L6-A V#A` Ar( CHECKI}NG DATA(86-%@(LINE:!"8B:,@A`2F%6-F:A,%F:A,$AV+C(LINE  MIS}SING!F<q-@@@56-@:7<,,&@H[6-@:7%@<%@,,&@Hq6-8,$@%8,F.}"@*@ $". @@P% 6-%!A %6-&AZ  ""@@d A`n F:}A,@A`x"@"*@A$5*@@H*@A%[*@@n*@}*@@6@Z"(INSERT DISK, PRESS RETURN/;@,3Z@@ D:}SNS.OBJ*@AU)*@AU<*@O*@@6b*@@uu*@@8} APM(( WRITING FILE#6-@/6-A 9#AC AM @@(BAD DATA: LINE ll20802}4A9008552A9748DC80220B424A231A024206D24A220A90D9D42032056E4ADEB02F00620F5244C1624204E254C1624,372ll5445524D494E414C204D4F}44459B4255464645522046554C4C7D9B5341564520425546464552204F4E9B53415645204445,110ll564943453A4B3A9B523A9B8E44038C4503A200A}9099D42039D49034C56E4A210A90C9D42032056E4A9679D4403A9249D45,522kk03A9039D4203A9049D4A03A9009D4B034C56E4A9008580A220A90C9D}42034C56E420A624A96A9D4403A9249D4503A9229D,76ll4203A9C09D4A032056E4A9269D4203A9009D4A032056E4A9039D4203A90D9D4A032056E4A9}289D4203A9009D4A034C56E4,656kkA220A9079D4203A9009D48039D49032056E4C908D002A97EC920B00160A68048F0253023A0009181E681D002E68}2A582CD,41$llE602D012A581CDE502D00BA9FF8580A23FA024206D24A200A90B9D42038A9D48039D4903684C56E4ADFC02C9FFF02DA210,742.llA}9009D48039D4903A9079D42032056E4C97ED002A908A22048A9009D48039D4903A90B9D4203682056E460AD1FD0C907F0,5508llF8C906D01AA680D016}E680A9608581A9268582A9248DC802A24CA0244C6D24C905D0D6A580F0D220A624A200A95B9D4403,576BllA9249D4503A90C9D4803A9009D4903A90B9}D42032056E4A9059D4203A9149D48038A9D4903A94C9D4403A9269D45032056,796LllE4AD4C26C99BD00568684C0724A220A9039D4203A94C9D4403A9}269D4503A9089D4A03A9009D4B032056E43098A000A99B,553Vll9181E681D002E682A90B9D4203A9609D4403A9269D450338A581E9609D4803A582E92}69D49032056E430034C07244CAF25,605 D2:SNS.BASll9181E681D002E682A90B9D4203A9609D4403A9269D450338A581E9609D4803A582E9240100 ; --------------------------0110 ; THE SATURDAY NIGHT SPECIAL0120 ; --------------------------0130 ;0140 ; The One D}ay Terminal Program!0150 ;0160 ; by Charles Bachand0170 ;0180 ; START--> opens capture buffer.0190 ; SELECT-> saves buff}er after0200 ; requesting filename.0210 ; TERM mode reentered0220 ; if [RETURN] only!0230 ;02}40 ; System Equates0250 ; --------------0260 ;0270 LMARGN = $52 ;left margin0280 COLOR4 = $02C8 ;border color0290 ME}MTOP = $02E5 ;memory top pntr0300 BCOUNT = $02EB ;RS-232 buff cnt0310 CH = $02FC ;keyboard buffer0320 ICCOM = $0342} ;CIO command0330 ICBADR = $0344 ;CIO buff addr0340 ICBLEN = $0348 ;CIO buff len0350 ICAUX1 = $034A ;CIO aux byte 10}360 ICAUX2 = $034B ;CIO aux byte 20370 CONSOL = $D01F ;console keys0380 CIOV = $E456 ;CIO vector0390 ;0400 ; Zero Pa}ge Variables0410 ; -------------------0420 ;0430 *= $80 ;page zero data0440 ;0450 SAV *= *+1 ;download fla}g0460 ADDR *= *+2 ;memory pointer0470 ;0480 ; Program starts here0490 ; -------------------0500 ;0510 *= $2400} ;program here0520 ;0530 SNS JSR KOPEN ;open keyboard0540 LDA #0 ;get zero0550 STA LMARGN ;40 column sc}reen0560 REOPEN LDA #$74 ;blue0570 STA COLOR4 ;for background0580 JSR INITR ;init RS-2320590 LDX # TMTX ;text addr hi0610 JSR PRINT ;? "TERM MODE"0620 RSTAT LDX #$20 ;IOCB #20630 LD}A #13 ;status command0640 STA ICCOM,X ;CIO command byte0650 JSR CIOV ;STATUS #20660 LDA BCOUNT ;buffer} count0670 BEQ KCHECK ;empty? Yes.0680 JSR GET232 ;No. get byte0690 JMP RSTAT ;continue0700 KCHECK JSR RE}ADK ;check keys0710 JMP RSTAT ;continue0720 ;0730 ; Text Goes Here0740 ; --------------0750 ;0760 TMTX .BYTE "TER}MINAL MODE",$9B0770 BFTX .BYTE "BUFFER FULL",$7D,$9B0780 SOTX .BYTE "SAVE BUFFER ON",$9B0790 SDTX .BYTE "SAVE DEVICE:"080}0 KNAME .BYTE "K:",$9B0810 RNAME .BYTE "R:",$9B0820 ;0830 ; Text Printing Routine0840 ; ---------------------0850 ;0860 } PRINT STX ICBADR ;text addr lo0870 STY ICBADR+1 ;text addr hi0880 LDX #0 ;IOCB #00890 LDA #9 ;write } record0900 STA ICCOM,X ;CIO command0910 STA ICBLEN+1,X ;large length0920 JMP CIOV ;print string0930 ;094 }0 ; Open keyboard for input0950 ; -----------------------0960 ;0970 KOPEN LDX #$10 ;use IOCB #10980 LDA #12 ;clo }se command0990 STA ICCOM,X ;CIO command byte1000 JSR CIOV ;CLOSE #11010 LDA # KNAME ;fname addr hi1040 STA ICBADR+1,X ;CIO buf addr hi1050 LDA #3} ;open command1060 STA ICCOM,X ;CIO command byte1070 LDA #4 ;for input1080 STA ICAUX1,X ;CIO aux byt}e #11090 LDA #01100 STA ICAUX2,X ;CIO aux byte #21110 JMP CIOV ;OPEN #1,4,0,"K:"1120 ;1130 ; Close File #}21140 ; -------------1150 ;1160 CLOSE2 LDA #0 ;get zero1170 STA SAV ;clear SAVE flag1180 LDX #$20 ;use }IOCB #21190 LDA #12 ;close command1200 STA ICCOM,X ;CIO command byte1210 JMP CIOV ;CLOSE #21220 ;1230} ; Initialize R: Device1240 ; --------------------1250 ;1260 ; turn DTR line on1270 ;1280 INITR JSR CLOSE2 ;CLOSE #2129}0 LDA # RNAME ;fname addr hi1320 STA ICBADR}+1,X ;CIO addr hi1330 LDA #34 ;special command1340 STA ICCOM,X ;CIO command1350 LDA #192 ;DTR on1360 } STA ICAUX1,X ;CIO aux byte 11370 JSR CIOV ;XIO 34,#2,192,0,"R:"1380 ;1390 ; Set for light translation1400 ;141}0 LDA #38 ;special command1420 STA ICCOM,X ;CIO command1430 LDA #0 ;light trans1440 STA ICAUX1,X };CIO aux byte 11450 JSR CIOV ;XIO 38,#2,0,0,"R:"1460 ;1470 ; Open "R:" for read/write mode1480 ;1490 LDA #3 } ;open command1500 STA ICCOM,X ;CIO command1510 LDA #13 ;read/write opt1520 STA ICAUX1,X ;CIO aux byte }11530 JSR CIOV ;OPEN #2,13,0,"R:"1540 ;1550 ; Enable concurrent mode I/O1560 ;1570 LDA #40 ;concurrent cm}d1580 STA ICCOM,X ;CIO command1590 LDA #0 ;1600 STA ICAUX1,X ;CIO aux byte 11610 JMP CIOV ;XIO 40},#2,0,0,"R:"1620 ;1630 ; Read RS-232 device1640 ; ------------------1650 ;1660 GET232 LDX #$20 ;IOCB #21670 LDA #7 } ;get char cmd1680 STA ICCOM,X ;CIO command1690 LDA #0 ;get zero1700 STA ICBLEN,X ;CIO length lo1710} STA ICBLEN+1,X ;CIO length hi1720 JSR CIOV ;GET #2,CHAR1730 CMP #8 ;ASCII BS?1740 BNE NOBS ;No}. skip1750 LDA #126 ;make ATASCII BS1760 NOBS CMP #32 ;Yes. char<32?1770 BCS CFLAG ;Yes. ignore it1780 } RTS ;return1790 CFLAG LDX SAV ;get sav flag1800 PHA ;save Acc1810 BEQ NOPOKE ;download? No.1 }820 BMI NOPOKE ;buffer full?1830 LDY #0 ;No. zero offset1840 STA (ADDR),Y ;save byte1850 INC ADDR !} ;pointer lo1860 BNE NCARRY ;overflow? No.1870 INC ADDR+1 ;pointer hi1880 NCARRY LDA ADDR+1 ;compare pntr hi189"}0 CMP MEMTOP+1 ;with MEMTOP hi1900 BNE NOPOKE ;same? No.1910 LDA ADDR ;compare pntr lo1920 CMP MEMTOP #} ;with MEMTOP lo1930 BNE NOPOKE ;same? No.1940 LDA #$FF ;buff full flag1950 STA SAV ;set flag1960 $} LDX # BFTX ;text hi1980 JSR PRINT ;? "BUFFER FULL"1990 NOPOKE LDX #0 ;IOCB #02000 %} LDA #11 ;put char cmd2010 STA ICCOM,X ;CIO command2020 TXA ;get zero2030 STA ICBLEN,X ;CIO len&}gth lo2040 STA ICBLEN+1,X ;CIO length hi2050 PLA ;restore Acc2060 JMP CIOV ;print char2070 ;2080 '}; Read keyboard and console2090 ; -------------------------2100 ;2110 READK LDA CH ;keyboard buffer2120 CMP #$FF (} ;key pressed?2130 BEQ CHKCON ;No. skip next2140 LDX #$10 ;IOCB #12150 LDA #0 ;get zero2160 STA)} ICBLEN,X ;CIO buff len lo2170 STA ICBLEN+1,X ;CIO buf len hi2180 LDA #7 ;get char2190 STA ICCOM,X ;CIO c*}ommand2200 JSR CIOV ;read keyboard2210 CMP #126 ;ATASCII BS?2220 BNE NOABS ;No. skip2230 LDA #8 +} ;make ASCII BS2240 NOABS LDX #$20 ;IOCB #22250 PHA ;save Acc2260 LDA #0 ;get zero2270 STA I,}CBLEN,X ;CIO buf len lo2280 STA ICBLEN+1,X ;CIO buf len hi2290 LDA #11 ;put char2300 STA ICCOM,X ;CIO comm-}and2310 PLA ;restore Acc2320 JSR CIOV ;write RS-2322330 CXIT RTS ;return2340 CHKCON LDA CONSOL .};console keys2350 CMP #7 ;any pressed?2360 BEQ CXIT ;No. return2370 CMP #6 ;START key?2380 B/}NE TRY5 ;No. skip next2390 LDX SAV ;save buffer on?2400 BNE TRY5 ;Yes. skip next2410 INC SAV ;No0}. turn it on2420 LDA # BUFF ;buffer addr hi21}450 STA ADDR+1 ;buffer pntr hi2460 LDA #$24 ;dark orange2470 STA COLOR4 ;border color2480 LDX # SOTX ;text addr hi2500 JMP PRINT ;? "SAVE BUFFER ON"2510 TRY5 CMP #5 ;OPTION press3}ed?2520 BNE CXIT ;No. return2530 LDA SAV ;buffer on?2540 BEQ CXIT ;No. return2550 FNTRAP JSR CLOSE24} ;CLOSE #22560 LDX #0 ;IOCB #02570 LDA # SDTX ;text addr hi2600 STA ICBADR+1,X ;CIO addr hi2610 LDA #12 ;message length2620 STA ICBLEN,X ;CIO len6}gth lo2630 LDA #0 ;get zero2640 STA ICBLEN+1,X ;CIO length hi2650 LDA #11 ;put characters2660 ST7}A ICCOM,X ;CIO command2670 JSR CIOV ;? "SAVE DEVICE?";2680 LDA #5 ;get record2690 STA ICCOM,X ;CIO com8}mand2700 LDA #20 ;20 char max2710 STA ICBLEN,X ;CIO length lo2720 TXA ;get zero2730 STA ICBLE9}N+1,X ;CIO length hi2740 LDA # FNAME ;filena:}me area hi2770 STA ICBADR+1,X ;CIO addr hi2780 JSR CIOV ;get filename2790 LDA FNAME2800 CMP #$9B ;c;}arriage return?2810 BNE FILSAV ;No. try to save2820 PLA ;pop return lo2830 PLA ;pop return hi<}2840 JMP REOPEN ;continue2850 FILSAV LDX #$20 ;IOCB #22860 LDA #3 ;OPEN file cmd2870 STA ICCOM,X ;CIO c=}ommand2880 LDA # FNAME ;name addr hi2910 ST>}A ICBADR+1,X ;CIO addr hi2920 LDA #8 ;for output2930 STA ICAUX1,X ;CIO aux byte 12940 LDA #0 ;get ze?}ro2950 STA ICAUX2,X ;CIO aux byte 22960 JSR CIOV ;open file2970 BMI FNTRAP ;error? Yes.2980 LDY #0 @} ;zero offset2990 LDA #$9B ;carriage return3000 STA (ADDR),Y ;at end of file3010 INC ADDR ;pointer loA}3020 BNE SKIPHI ;overflow? No.3030 INC ADDR+1 ;Yes. pointer hi3040 SKIPHI LDA #11 ;put characters3050 STA IB}CCOM,X ;CIO command3060 LDA # BUFF ;file buC}ffer hi3090 STA ICBADR+1,X ;CIO buf addr hi3100 SEC ;set carry3110 LDA ADDR ;end of file lo3120 D} SBC # BUFF ;bE}eginning hi3160 STA ICBLEN+1,X ;CIO length hi3170 JSR CIOV ;write file3180 BMI TRAP2 ;bad write? Yes.319F}0 JMP REOPEN ;done3200 TRAP2 JMP FNTRAP ;retry3210 ;3220 FNAME *= *+20 ;filename buffer3230 BUFF *= *+1 ;captuG}re buffer3240 ;3250 ; SET UP PROGRAM RUN ADDRESS3260 ;3270 *= $02E0 ;DOS run address3280 .WORD SNS ;run addH}r data3290 ;3300 .END P PROGRAM RUN ADDRESS3260 ;3270 *= $02E0 ;DOS run address3280 .WORD SNS ;run addOF1F2PN@@ **************************"J} * TOUCH-TONE (TM) DIALER * * *( * BY: TOM HUDSON *2 * ANALOG COMPUTING #19 "K} *< **************************F*** SET UP ARRAYS ***P&&9@,9@,;@ ,Z!!*** LOAD FREQUENCY D"L}ATA ***d3-@"&68,-/68,-3 n!!*** GET PHONE # TO DIAL ***x ENTER NUMBER TO DIAL"M} A *** NOW DIAL IT! ***-@B:,*** IS IT *? ***&7<,4*6-@& A **"N}* IS IT #? ***&7<,4#6-@& A !!*** GET DIGIT OF NUMBER ***6-A:7<,,##*** NOW START BOT"O}H TONES! ***A"2@8,@@A2@8,@@$$*** LEAVE TONE ON A MOMENT ***-@"P}@@  *** NOW TURN TONES OFF ***G%2@G2@ *"Q}** LEAVE OFF A MOMENT ***"-@@  , *** NOW DO NEXT DIGIT! ***6 @!!*** ALL DONE, GET NEW # ***"R}J A T*** TONE DATA ***^ 23,34h 26,46r 24,46| 22,46 26,42 24,42 22,42 26,38"S} 24,38 22,38 26,34 22,34D2:TOUCHTON.BAS46| 22,46 26,42 24,42 22,42 26,38 B10 *= $060020 LDA #$07 ;PLACE 7 IN ACCUM.30 ASL A ;TIMES 240 ASL A ;TIMES 450 ASL A ;TIMES&U} 860 STA TIMES8 ;SAVE RESULT70 BRK ;AND STOP!80 TIMES8 *=*+190 .END ;TIMES 450 ASL A ;TIMES$V10 *= $060015 LDA #23 ;PLACE 23 IN ACCUM.20 ASL A ;TIMES 225 ASL A ;TIMES 430 CLC ;CLEA*W}R CARRY FOR ADD35 ADC #23 ;ADD 23 = TIMES 5!40 STA TIMES5 ;AND STORE RESULT45 BRK ;ALL DONE!50 TIMES5 *X}*=*+155 .END35 ADC #23 ;ADD 23 = TIMES 5!40 STA TIMES5 ;AND STORE RESULT45 BRK ;ALL DONE!50 TIMES5 (10 *= $060015 LDA #23 ;PLACE 23 IN ACCUM.20 ASL A ;TIMES 225 STA TIMES2 ;SAVE *2 VALUE30 ASL A .Z} ;TIMES 435 ASL A ;TIMES 840 CLC ;CLEAR CARRY FOR ADD45 ADC TIMES2 ;*8 + *2 = *10!50 STA TIMES10 ;.[}SAVE TIMES 1055 BRK ;AND STOP!60 TIMES2 *=*+165 TIMES10 *=*+170 .ENDES2 ;*8 + *2 = *10!50 STA TIMES10 ;,U10 *= $060015 LDA #$02 ;PLACE 02...20 STA TOTAL+1 ;IN TOTAL HI BYTE25 LDA #$4F ;PLACE 4F...30 STA TOTAL 2]} ;IN TOTAL LO BYTE35 ASL TOTAL ;SHIFT LOW,40 ROL TOTAL+1 ;ROTATE HI = TIMES 245 ASL TOTAL ;SHIFT LOW,50 ROL TO2^}TAL+1 ;ROTATE HI = TIMES 455 ASL TOTAL ;SHIFT LOW,60 ROL TOTAL+1 ;ROTATE HI = TIMES 865 ASL TOTAL ;SHIFT LOW,72_}0 ROL TOTAL+1 ;ROTATE HI = TIMES 1675 BRK ;ALL DONE!80 TOTAL *=*+285 .ENDES 865 ASL TOTAL ;SHIFT LOW,70Z10 *= $060020 LDA #184 ;PUT 184 IN ACCUM.30 LSR A ;DIVIDE BY 240 LSR A ;DIVIDE BY 450 LSR A 6a} ;DIVIDE BY 860 STA DIV8 ;SAVE RESULT70 BRK ;AND STOP!80 DIV8 *=*+190 .END ;DIVIDE BY 450 LSR A 4`10 *= $060015 LDA #$49 ;SET UP...20 STA SCORE+2 ;3-BYTE...25 LDA #$23 ;VALUE...30 STA SCORE+1 ;IN SCORE..:c}.35 LDA #$F8 ;= $4923F840 STA SCORE45 LSR SCORE+2 ;DIVIDE...50 ROR SCORE+1 ;SCORE...55 ROR SCORE ;BY 260 :d} LSR SCORE+2 ;DIVIDE...65 ROR SCORE+1 ;SCORE...70 ROR SCORE ;BY 475 BRK ;AND STOP!80 SCORE *=*+385 .EN:e}DSR SCORE+2 ;DIVIDE...65 ROR SCORE+1 ;SCORE...70 ROR SCORE ;BY 475 BRK ;AND STOP!80 SCORE *=*+385 .EN8GrTEXTADDLOBYTNVAHd## by Charles Bachandn>g};@ ,6-Ad }DEFAULT RESETTER  A"     6-F:,   >h}   庠  A6-: )!AU 0 ԠƠš: APA>i}i%@(%@AA(6-P:'AV,%@&$AV)%@6-%@) A@>j},&@v&%@F:@,@%@F:@,J6F:@ ,"*@ @6@T*>k}@A('@@* ^1. &PRESS ͠Ԡ TO ENACT CHANGES1address label------- ----->l}82,Left Margin83,Right Margin708,Setcolor 0709,Setcolor 1710,Setcolor 2&711,Setcolor 30>m}712,Background color D:DEFAULT.BAS708,Setcolor 0709,Setcolor 1710,Setcolor 2&711,Setcolor 30<*abwBASDFPMMP0P1P2P3MANS1S2BOMBACMENSMEBMANMANS1S2BOMBBOMBS1S2EFBo} Bp} Bq}!"#$ A A$6-?:A6,67,.$67,.1 6-&6-&1 @"Br}) @"A "@@03T:,"$6-@36-F:A, @m6-%@Bs}B2Q)!A 56-@%A6-c2m @u+F:B2a,!)F:B2b,!Bt}M2Y6-kB2y@ u @P X 67,.02%@P@@Bu}BB2x@ X!$AA0! @2.6-%@.F:B2b,!@`3X -@Bv}6@4-@@8 T2@ @X 4g-@67,. *6-@I6-H:,$Bw}AP%@PUB2Ia6-@%g6.5B2x@  @<X -@6@4-@@Bx}8 T2@@@X =g-@67,. *6-@I6-H:,$AP%@PUB2PaBy}6-@%g6.>B2x@  @ŠŠp +@AVA&90Bz}S0@^(@pAR@$$(@     $$(@    B{}  $$(@     $$(@     $$(@     $$$(@B|}   .!!( by Glen Raffel8)6-%@"@)6-B40@@4FB}}:B2y,"@AL AҮԠ(6-F:A,&@(6-$AVI-@@B~}+-@/"A%$@%E I ll0,63,63,63,0,252,252,252,0,199,68,68,124,0,0,255,0,16,0,124,16,40,68,0B},255,255,255,255,255,255,255,255Я͠Ӡ+@%@;@,;+P:C:,'A$,%@,$A$B}&C:,&@,;A,;A(,;A(,;A(,o;A(,;A(,*6.>:,B67A,.>:B},Q67@,.W6.]6.c6.i6.o6.11;@,;@,;@,;@,W-@@")B}67<,.>:,- A-@@E"S67<,.>:,W i-@@")67<,.>:,- A-@@EB}"S67<,.>:,W iA#@--0,24,60,24,24,255,24,24,24,36,66,66,0,0 %%0,0,60,90,126,165,129,126,0,0,0''B}0,0,195,129,255,219,255,66,60,0,0++0,0,0,24,126,255,255,255,126,24,0,0,0(>BByC:,'AV,AY@F>B}B2w@2KA@'AA9A@XKAA'F--A6A6%@8#"B})- PDD104,173,120,2,201,7,208,14,173,254,6,105,2,141,254,6,141,0,208ZDD76,37,6,201,11,208,11,173,254,6,233,2,141,B}254,6,141,0,208,96,0dAA $wԮxg1;@ ,;@ ,;@ ,;@,L6.$$$$$$$B}$$$$$$$$$$$$$g6.####################l6-6-@'6. 36-E@`6.B}l6-?@ԠР[@(}-AVA$?@@M6-%@[6-B}%?R-@@*(@WAVE <-@@R(@SCORE -@@+-@B}@=A@Y2@@] 2A-@B}@    ZA@2-@06@@-@D VB2yZ 6-A 6B}-@ '6-@36-@?6-@%E6-d6-H:,$AP%@P6-H:,$AP%@PhAVB},-@@6@8-E(@I [-@h(@eA@4'AB}@$9-F(@X-@e(@BB2HB2I'B2P067,.967,.B}B67,.A-@67<,.%" 4-@@A(@*B2x@ 'AA *$j-B}@ A ;2%@P@@D67,.H j2p6-@6-@B}8-@6@T2@Ph-@@l p %6-&@%"APbB} 6.-@$67<,.%( :-@@G(@M6.V67,.\6.b6.+6-!B2x@ B}+ @ G-@+B2H%/ 56.;6.A6.G6. /%2/ AB}  6- @yAVA$'@-(}?-@M( Ša-@@B}s-y(Y-@@P  1@@C-@@Y(@SCORE GF:BB}2y,"@,-@@B2H%D G%)6-%@"AU)6-A AP B} D2:SIEGE.BAS@@B2H%D G%)6-%@"AU)6-A AP @100998.758.257.757-5-9-9-8.75-8.25-7.75-7-3-2.25-1.5-1-1-1.25-2344.54.754.543-4-5-5-4.5-3.75F}-3555.256788.75765.55.756788.58.758998.758.257.757-5-9-9-8.75-8.25-7.75-7-3-2.25-1.5-1-1-F}1.25-2344.54.754.543-4-5-5-4.5-3.75-3555.256788.75765.55.756788.58.758-777.758.258.7599F}5-7-7.75-8.25-8.75-9-9-8.75-8-7-6-5-3-3-2.75-2-100.75112.53.544.7555-7-8-8.75-9-8.75-8-8.25F}-8-7-6-5.5-5.25-5.5-6-7-8-777.758.258.75995-7-7.75-8.25-8.75-9-9-8.75-8-7-6-5-3-3-2.75-2-10F}0.75112.53.544.7555-7-8-8.75-9-8.75-8-8.25-8-7-6-5.5-5.25-5.5-6-7-86666666666666666F}666666666666666666666666666666666600000000000000000000000000000F}00000000000000000000011012233445566778899101011111212131314141515161617F}17181819192020212122222323242425252626272728282929303031313232333334343535363637373F}83839394040141424243434444454546464747484849495050415152525353545455555656575758585F}95960606161626263636464656566666767686869697070717172727373747475757676777778787979F}808081818282838384848585868687878888898990905191929293939494959596969797989899991001F}0091858959757287820702474348435851512520905191929293939494959596969797989899991001D=32-2-2.25-2.75-4-1.3-1.5-1.9-2.700001.31.51.92.722.252.7541.31.51.92.70000-1.3-1.5-1.9-2.70J}0001.31.51.92.722.252.7541.31.51.92.70000-1.3-1.5-1.9-2.7-2-2.25-2.75-4-1.3-1.5-1.9-2.78420J}842084208420842084208420842040122334566778910101111121314141515161718J}181919202122222323242526262727282930303131321559913131717212125252929148812121616J}20202424282832324242526262727282930303131321559913131717212125252929148812121616H135 ? "* ROTATION: LARRY HARRIS *"160 DIM R$(1),A$(5),F$(20),DMA$(1),O$(1),EG$(2),IN$(1):EG$=CHR$(27):EG$(2)=CHR$(7)434 ? N}:? "DO YOU WANT TO DO AN X-Y LOOP";:INPUT R$:IF R$<>"Y" THEN 440436 ? "HOW MANY DEG. TOTAL ROTATION";:INPUT AN2:AN2=(AN2/360N})*6.28438 ? "HOW MANY DEG. INC. ROTATION";:INPUT AN3:AN3=(AN3/360)*6.28:GOSUB 2300:REM SET UP PAGE FLIP439 GOTO 2000850 GON}SUB 2200:SETCOLOR 2,0,0:COLOR 1:TRAP OFF1035 IF FLAG THEN 21001040 IF PEEK(53279)=7 AND STRIG(0)=1 THEN 10352000 FLAG=1:R=N}(OX^2+OY^2)^0.5:AN1=ATN(OY/OX):AN2=AN2+AN12100 AN1=AN1+AN3:OX=R*COS(AN1):OY=R*SIN(AN1)2120 GOTO 4402199 REM PAGE FLIP2200N} IF NOT FLAG THEN GRAPHICS 24:RETURN 2201 IF AN1>AN2 THEN FLAG=02202 XI=XI+1-2*(XI=2):XA=2-(XI=2)2205 FOR S=40 TO 0 STEP N}-10:SOUND 0,S,10,8:NEXT S2210 POKE DL+4,DLL(XA):POKE DL+5,DLH(XA)2220 POKE DL+100,DHL(XA):POKE DL+101,DHH(XA)2230 POKE 88,N}DLL(XI):POKE 89,DLH(XI)2240 ADS=DLL(XI)+256*DLH(XI):Z=USR(1536,ADS)2250 RETURN 2299 REM SET UP DATA FOR PAGE FLIP2300 TRAN}P 2500:DIM DLL(2),DLH(2),DHL(2),DHH(2):X=0:RESTORE 24002310 READ DAT:IF DAT=-1 THEN 23302320 POKE 1536+X,DAT:X=X+1:GOTO 231N}02330 X=2:GOSUB 2350:X=1:POKE 106,PEEK(106)-32:GOSUB 23502340 RETURN 2350 GRAPHICS 24:DLL(X)=PEEK(88):DLH(X)=PEEK(89):DL=PN}EEK(560)+256*PEEK(561):DHL(X)=PEEK(DL+100)2360 DHH(X)=PEEK(DL+101):RETURN 2399 REM CLR DATA2400 DATA 104,24,104,133,4,104,N}133,3,165,4,105,30,133,10,160,0,169,0,145,3,200,192,0,208,249,160,02410 DATA 230,4,165,4,197,10,208,237,96,-12500 TRAP OFF:N}GRAPHICS 24:RETURN 33,10,160,0,169,0,145,3,200,192,0,208,249,160,02410 DATA 230,4,165,4,197,10,208,237,96,-12500 TRAP OFF:L